package net.bracode.view;

import javax.swing.JOptionPane;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import net.bracode.dao.Database;
import net.bracode.entity.Participante;

public class ParticipanteDetails extends Application {
	
	private AnchorPane pane;
	private Scene      scene;
	private Stage      stage;

	private Participante participante;
	private Application menu;
	
	private Button voltar;
	private Button remover;
	private Button atualizar;
	
	private Label id;
	private Label nome;
	private Label cpf;
	private Label perfil;
	private Label fone;
	
	
	public ParticipanteDetails(Participante participante, Application menu) {
		this.participante = participante;
		this.menu = menu;
		iniciarComponentes();
		iniciarListeners();
	}
	
	@Override
	public void start(Stage stage) throws Exception {
		this.stage = stage;
		
		pane.getChildren().addAll(id, nome, cpf, perfil, fone,
				voltar, remover, atualizar);
		
		scene.getStylesheets().add("login.css");
		stage.setScene(scene);
		stage.setTitle("Detalhe do Participante");
		stage.show();
		iniciarLayouts();
	}
	
	private void iniciarComponentes(){
		pane      = new AnchorPane();
		scene     = new Scene(pane, 600, 400);
		voltar    = new Button("Voltar");
		remover   = new Button("Remover");
		atualizar = new Button("Atualizar");
		
		id     = new Label("ID: " + String.valueOf(participante.getId()));
		nome   = new Label("Nome: " + participante.getNome());
		cpf    = new Label("CPF: " + participante.getCpf());
		perfil = new Label("Perfil: " + participante.getPerfil());
		fone   = new Label("Fone: " + participante.getFone());
		
		id    .setFont(new Font(20));
		nome  .setFont(new Font(20));
		cpf   .setFont(new Font(20));
		perfil.setFont(new Font(20));
		fone  .setFont(new Font(20));
	}
	
	private void iniciarListeners(){
		voltar.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent arg0) {
				voltar();
			}
		});
		
		remover.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent arg0) {
				int x = JOptionPane.showConfirmDialog(null, "Deseja realmente excluir?");
				if(x == JOptionPane.OK_OPTION){
					Database.getDatabase().delete(participante.getId());
					voltar();
				}
			}
		});
		
		atualizar.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent arg0) {
				try {
					new ParticipanteInsert(participante, menu).start(getStage());
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	private void iniciarLayouts(){
		id.setLayoutX(200);
		id.setLayoutY(75);
		
		nome.setLayoutX(200);
		nome.setLayoutY(125);
		
		cpf.setLayoutX(200);
		cpf.setLayoutY(175);
		
		perfil.setLayoutX(200);
		perfil.setLayoutY(225);
		
		fone.setLayoutX(200);
		fone.setLayoutY(275);
		
		double voltarX = (pane.getWidth() - (voltar.getWidth() +
				remover.getWidth() + atualizar.getWidth() + 10)) / 2;
		
		double atualizarX = voltarX + voltar.getWidth() + 5;
		
		double removerX = atualizarX + atualizar.getWidth() + 5;
		
		voltar.setLayoutX(voltarX);
		voltar.setLayoutY(350);
		
		remover.setLayoutX(removerX);
		remover.setLayoutY(350);
		
		atualizar.setLayoutX(atualizarX);
		atualizar.setLayoutY(350);
	}
	
	private void voltar(){
		try {
			this.menu.start(getStage());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public Stage getStage() {
		return stage;
	}
}
